package com.artron.mediaartron.data.net.api;

import com.artron.baselib.entity.Response;
import com.artron.mediaartron.data.entity.Coupon;
import com.artron.mediaartron.data.entity.CouponData;
import com.artron.mediaartron.data.entity.GiftCardData;

import retrofit2.http.POST;
import retrofit2.http.Query;
import rx.Observable;

/**
 * 优惠券接口
 * Created by qi on 2017/12/11.
 */

public interface CouponApi {

    /**
     * 我的优惠券
     *
     * @param passId
     * @param pageSize
     * @param pageNo
     * @return
     */
    @POST("myCoupon")
    Observable<Response<CouponData>> myCoupon(@Query("passId") String passId, @Query("pageSize") int pageSize, @Query("pageNo") int pageNo);

    /**
     * 获取优惠券策略
     *
     * @param passId
     * @param productTypes
     * @return
     */
    @POST("queryCouponStrategy")
    Observable<Response<CouponData>> queryCouponStrategy(@Query("passId") String passId, @Query("productTypes") String productTypes);

    /**
     * 兑换优惠券
     *
     * @param couponCode
     * @param passId
     * @return
     */
    @POST("assignCoupon")
    Observable<Response> assignCoupon(@Query("couponCode") String couponCode, @Query("passId") String passId);

    /**
     * 赠送优惠券
     *
     * @param passId
     * @return
     */
    @POST("giveCouponFroActivity")
    Observable<Response<Coupon>> giveCouponFroActivity(@Query("passId") String passId);

    /**
     * 核对优惠券
     *
     * @param couponCode
     * @param passId
     * @return
     */
    @POST("checkCoupon")
    Observable<Response<Coupon>> checkCoupon(@Query("couponCode") String couponCode, @Query("passId") String passId);

    /**
     * 查询礼品卡
     *
     * @param passId
     * @param pageSize
     * @param pageNo
     * @return
     */
    @POST("queryGiftcardLog")
    Observable<Response<GiftCardData>> queryGiftcardLog(@Query("passId") String passId, @Query("pageSize") int pageSize, @Query("pageNo") int pageNo);

    /**
     * 兑换礼品卡
     *
     * @param passId
     * @param giftcardCode
     * @return
     */
    @POST("usedGiftcard")
    Observable<Response> usedGiftcard(@Query("passId") String passId, @Query("giftcardCode") String giftcardCode);

}